package com.example.msai.config;

import com.example.msai.entity.Coordinate;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;

import java.io.IOException;

public class CoordinateDeserializer extends JsonDeserializer<Coordinate> {
    @Override
    public Coordinate deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        JsonNode node = p.getCodec().readTree(p);

        if (node.isArray() && node.size() == 2) {
            // 处理 [经度, 纬度] 格式
            double longitude = node.get(0).asDouble();
            double latitude = node.get(1).asDouble();
            return new Coordinate(longitude, latitude);
        } else if (node.isObject() && node.has("coordinates")) {
            // 处理 {"coordinates": [经度, 纬度]} 格式
            JsonNode coordinatesNode = node.get("coordinates");
            if (coordinatesNode.isArray() && coordinatesNode.size() == 2) {
                double longitude = coordinatesNode.get(0).asDouble();
                double latitude = coordinatesNode.get(1).asDouble();
                return new Coordinate(longitude, latitude);
            }
        }

        throw new IOException("无法解析坐标格式");
    }
}
